package com.learning.servlet2x.thread;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * ClassName: ThreadSafetyServlet
 * Description: Servlet 线程安全
 * 1、 先访问 Get 方法:
 * http://localhost:8080/threadSafetyServlet?name=sam
 * 2、然后访问 POST 方法
 * http://localhost:8080/threadSafetyServlet?name=sam-modify
 * <p>
 * Date: 2014-9-25 14:11 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
public class ThreadSafetyServlet extends HttpServlet {

    private static final long serialVersionUID = 2957055449370562943L;

    /**
     * 1、Servlet，不建议这种全局变量，会发生线程安全问题。建议放在doGet、doPost 方法内，局部变量。
     * 2、只读 全局变量 使用final 关键字修饰
     */
    private String name;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        name = request.getParameter("name");

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }


        System.out.println("您好, " + name + ". 您使用了 GET 方式提交数据");
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        name = request.getParameter("name");
        System.out.println("您好, " + name + ". 您使用了 POST 方式提交数据");
    }
}


/*
 * 您好, sam-modify. 您使用了 POST 方式提交数据
 * 您好, sam-modify. 您使用了 GET 方式提交数据
 */
